25 lines
947 B
Idris
25 lines
947 B
Idris
module Proof
|
|
|
|
import Data.Vect
|
|
|
|
import Signature
|
|
import Term
|
|
import Formula
|
|
import Context
|
|
|
|
%default total
|
|
|
|
public export
|
|
data Proof : Context sig g -> Formula sig n -> Type where
|
|
Hyp : {c : Context sig g} -> (i : Fin g) -> Proof c (snd $ index i c)
|
|
EqRefl : (t : Term sig k) -> Proof c (Equal t t)
|
|
EqSym : Proof c (Equal s t) -> Proof c (Equal t s)
|
|
EqTrans : Proof c (Equal s t) -> Proof c (Equal t u) -> Proof c (Equal s u)
|
|
EqE : {phi : Formula sig (S n)} -> Proof c (Equal s t) -> Proof c (elimBinder s phi) -> Proof c (elimBinder t phi)
|
|
BotE : Proof c Bot -> Proof c phi
|
|
Contra : Proof (Imp phi Bot :: c) Bot -> Proof c phi
|
|
ImpI : Proof (phi :: c) psi -> Proof c (Imp phi psi)
|
|
ImpE : Proof c (Imp phi psi) -> Proof c phi -> Proof c psi
|
|
ForallI : Proof c phi -> Proof c (Forall phi)
|
|
ForallE : Proof c (Forall phi) -> Proof c (elimBinder t phi)
|
|
Weaken : Proof c1 phi -> Subset c1 c2 -> Proof c2 phi
|