m1-internship/FirstOrderLogic.agda

31 lines
758 B
Agda

{-# OPTIONS --prop #-}
open import Agda.Builtin.Nat
module FirstOrderLogic (TV : Set) (F : Nat Set) (R : Nat Set) where
open import PropUtil
open import ListUtil
mutual
data FArgs : Nat Set where
zero : FArgs 0
next : {n : Nat} FArgs n Term FArgs (suc n)
data Term : Set where
Var : TV Term
Fun : {n : Nat} F n FArgs n Term
data RArgs : Nat Set where
zero : RArgs 0
next : {n : Nat} RArgs n Term RArgs (suc n)
data Form : Set where
Rel : {n : Nat} R n (RArgs n) Form
_⇒_ : Form Form Form
_∧∧_ : Form Form Form
_∀∀_ : TV Form Form
infixr 10 _∧∧_
infixr 8 _⇒_