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

Safe HaskellNone
LanguageHaskell98

Data.Logic.ATP.Equate

Description

ATOM with a distinguished Equate predicate.

Synopsis

Documentation

class HasApply atom => HasEquate atom where Source

Atoms that support equality must be an instance of HasEquate

Methods

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

Create an equate predicate

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

Analyze whether a predicate is an equate or a regular apply.

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

Combine equate and atomic to build a formula from two terms.

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

Zip two atoms that support equality

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 HasEquate types.

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

Implementation of onterms for HasEquate 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

Convert between HasEquate atom types.

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 
(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 
Unify (SkAtom, SkAtom) Source 
type PredOf (FOL predicate term) = predicate Source 
type TermOf (FOL predicate term) = term Source 
type UTermOf (SkAtom, SkAtom) = TermOf SkAtom Source 

type EqAtom = FOL Predicate FTerm Source

An atom type with equality predicate