Я смотрел на:
Inductive aevalR : aexp -> nat -> Prop :=
| E_ANum : forall (n: nat),
aevalR (ANum n) n
| E_APlus : forall (e1 e2: aexp) (n1 n2: nat),
aevalR e1 n1 ->
aevalR e2 n2 ->
aevalR (APlus e1 e2) (n1 + n2)
| E_AMinus: forall (e1 e2: aexp) (n1 n2: nat),
aevalR e1 n1 ->
aevalR e2 n2 ->
aevalR (AMinus e1 e2) (n1 - n2)
| E_AMult : forall (e1 e2: aexp) (n1 n2: nat),
aevalR e1 n1 ->
aevalR e2 n2 ->
aevalR (AMult e1 e2) (n1 * n2).
и пытался понять, что это значит.Я понимаю, что это требует арифметического опыта.отображает это на функцию, которая отображает на нат, который отображается на реквизит.Но что меня смущает, так это то, что находится внутри предложений | A_AOp
.У них нет периода в конце, а у плюса и минуса есть стрелка, указывающая на другую стрелку.
Что это за синтаксис и что он говорит?Какой вклад в этот индуктивный тип?Как обычно я вижу в python:
def f(a,b,*args):
, поэтому я знаю, что я должен дать в качестве входных данных (более или менее).Но этот смущает меня.Как мне это использовать и что означает определение?
idk, если это простой вопрос функционального программирования или нет, так как я только изучаю Coq и функциональное программирование, а эта часть не была в введении в функциональное программирование курса, на который я смотрел:
https://softwarefoundations.cis.upenn.edu/lf-current/Imp.html