atp-haskell-1.7: Translation from Ocaml to Haskell of John Harrison's ATP code

Safe HaskellNone
LanguageHaskell98

Data.Logic.ATP.Equate

Description

ATOM with the Equate predicate

Synopsis

Documentation

class HasApply atom => HasEquate atom where Source

Atoms that support equality must have HasEquate instance

Methods

equate :: TermOf atom -> TermOf atom -> atom Source

foldEquate :: (TermOf atom -> TermOf atom -> r) -> (PredOf atom -> [TermOf atom] -> r) -> atom -> r Source

Instances

(IsPredicate predicate, IsTerm term) => HasEquate (FOL predicate term) Source 

(.=.) :: (IsFormula formula, HasEquate atom, atom ~ AtomOf formula) => TermOf atom -> TermOf atom -> formula infix 6 Source

Build an equality formula from two terms.

zipEquates :: HasEquate atom => (TermOf atom -> TermOf atom -> TermOf atom -> TermOf atom -> Maybe r) -> (PredOf atom -> [(TermOf atom, TermOf atom)] -> Maybe r) -> atom -> atom -> Maybe r Source

Zip two atoms that support equality

isEquate :: HasEquate atom => atom -> Bool Source

prettyEquate :: IsTerm term => PrettyLevel -> Rational -> term -> term -> Doc Source

Format the infix equality predicate applied to two terms.

overtermsEq :: HasEquate atom => (TermOf atom -> r -> r) -> r -> atom -> r Source

Implementation of overterms for HasApply types.

ontermsEq :: HasEquate atom => (TermOf atom -> TermOf atom) -> atom -> atom Source

Implementation of onterms for HasApply types.

showApplyAndEquate :: (HasEquate atom, Show (TermOf atom)) => atom -> String Source

Implementation of Show for HasEquate types

showEquate :: Show term => term -> term -> String Source

convertEquate :: (HasEquate atom1, HasEquate atom2) => (PredOf atom1 -> PredOf atom2) -> (TermOf atom1 -> TermOf atom2) -> atom1 -> atom2 Source

data FOL predicate term Source

Instance of an atom type with a distinct equality predicate.

Constructors

R predicate [term] 
Equals term term 

Instances

IsFirstOrder EqFormula Source 
IsFirstOrder Formula Source 
Unify SkAtom V SkTerm Source 
(Eq predicate, Eq term) => Eq (FOL predicate term) Source 
(Data predicate, Data term) => Data (FOL predicate term) Source 
(Ord predicate, Ord term) => Ord (FOL predicate term) Source 
(Read predicate, Read term) => Read (FOL predicate term) Source 
(IsPredicate predicate, IsTerm term, Show predicate, Show term) => Show (FOL predicate term) Source 
(HasApply (FOL predicate term), HasEquate (FOL predicate term), IsTerm term) => Pretty (FOL predicate term) Source 
(IsPredicate predicate, IsTerm term) => HasFixity (FOL predicate term) Source 
(IsPredicate predicate, IsTerm term) => IsAtom (FOL predicate term) Source 
(IsPredicate predicate, IsTerm term) => HasApply (FOL predicate term) Source 
(IsPredicate predicate, IsTerm term) => HasEquate (FOL predicate term) Source 
type PredOf (FOL predicate term) = predicate Source 
type TermOf (FOL predicate term) = term Source 

type EqAtom = FOL Predicate FTerm Source

An atom type with equality predicate