Я довольно новичок в Агда. Я работаю над вопросом из задания. У меня есть большая часть, но есть одна цель, на которой я застрял.Agda: Продукт четных чисел даже
data Arith : Set where
Num : ℕ → Arith
Plus : Arith → Arith → Arith
Times : Arith → Arith → Arith
eval : Arith → ℕ
eval (Num x) = x
eval (Plus e1 e2) = eval e1 + eval e2
eval (Times e1 e2) = eval e1 * eval e2
data Even : ℕ → Set where
zEven : Even 0
ssEven : {n : ℕ} → Even n → Even (suc (suc n))
-- [PROBLEM 1]
plusEven : ∀ n m → Even n → Even m → Even (n + m)
plusEven zero m x x₁ = x₁
plusEven (suc zero) m() x₁
plusEven (suc (suc .0)) m (ssEven zEven) x₁ = ssEven x₁
plusEven (suc (suc ._)) m (ssEven (ssEven x)) x₁ = ssEven (ssEven (plusEven _ m x x₁))
-- [PROBLEM 2]
timesEven : ∀ n m → Even n → Even m → Even (n * m)
timesEven zero m x x₁ = zEven
timesEven (suc ._) zero (ssEven x) x₁ = (timesEven _ zero x x₁)
timesEven (suc ._) (suc ._) (ssEven x) (ssEven x₁) = ssEven ((λ h → {!!}) (timesEven _ _ x x₁))
Цель я должен доказать это
Goal: Even (.n₁ + suc (suc (.n₁ + .n * suc (suc .n₁))))
Я чувствую, что я должен использовать plusEven как некоторые. Но цель не выглядит такой простой. Я затруднил мне проблему? или я на правильном пути? Есть ли более простой способ сделать это? Я не хочу решения этого. Но было бы полезно подтолкнуть в правильном направлении. Некоторое время я застрял на этом.