31 lines
758 B
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 _⇒_
|
|
|