LX Layering Axioms

Status

This is an automatically-generated collection of the layering axioms. For more information, see the Layering LX on RDF

Note that the prefix "pt" is still used here instead of "lx". This should change soon.

Overview

The axioms are divided into several files according the their general purpose:

An observation: there are tradeoffs between human-readability, machine-readability-for-proving-satisfiability, and machine-readability-for-generating-proofs. The approach taken in ax4 might be better on all counts.

File schema.otter

     1	list(usable).
     2	rdf(pt_Conjunction,rx_superclass,pt_Formula).
     3	rdf(pt_Constant,daml_disjointWith,pt_Variable).
     4	rdf(pt_Constant,rx_superclass,pt_Term).
     5	rdf(pt_Formula,rx_superclass,rdfs_Class).
     6	rdf(pt_Quantification,rx_superclass,pt_Formula).
     7	rdf(pt_Sentence,rx_superclass,pt_Formula).
     8	rdf(pt_SubformulaProperty,rx_superclass,rdfs_Property).
     9	rdf(pt_Term,daml_disjointWith,pt_Formula).
    10	rdf(pt_Term,rx_superclass,rdfs_Class).
    11	rdf(pt_Triple,rx_superclass,pt_Formula).
    12	rdf(pt_TrueSentence,rx_superclass,pt_Sentence).
    13	rdf(pt_Variable,rx_superclass,pt_Term).
    14	rdf(pt_conjLeft,rdfs_domain,pt_Conjunction).
    15	rdf(pt_conjLeft,rdfs_range,pt_Formula).
    16	rdf(pt_conjLeft,rx_superclass,pt_subformulaProperty).
    17	rdf(pt_conjRight,rdfs_domain,pt_Conjunction).
    18	rdf(pt_conjRight,rdfs_range,pt_Formula).
    19	rdf(pt_conjRight,rx_superclass,pt_subformulaProperty).
    20	rdf(pt_denotation,rdfs_domain,pt_Constant).
    21	rdf(pt_denotation,rdfs_range,rdfs_Resource).
    22	rdf(pt_objectTerm,rdfs_domain,pt_Triple).
    23	rdf(pt_objectTerm,rdfs_range,pt_Term).
    24	rdf(pt_predicateTerm,rdfs_domain,pt_Triple).
    25	rdf(pt_predicateTerm,rdfs_range,pt_Term).
    26	rdf(pt_subformula,rdfs_domain,pt_Quantification).
    27	rdf(pt_subformula,rdfs_range,pt_Formula).
    28	rdf(pt_subformula,rx_superclass,pt_subformulaProperty).
    29	rdf(pt_subjectTerm,rdfs_domain,pt_Triple).
    30	rdf(pt_subjectTerm,rdfs_range,pt_Term).
    31	rdf(pt_uname,rdf_type,daml_UnambiguousProperty).
    32	rdf(pt_uname,rdfs_domain,rdfs_Resource).
    33	rdf(pt_uname,rdfs_range,rdfs_Literal).
    34	rdf(pt_variable,rdfs_domain,pt_Quantification).
    35	rdf(pt_variable,rdfs_range,pt_Variable).
    36	end_of_list.

File daml.otter

     1	%
     2	% DAML+OIL Semantics (as much as I need, at least)
     3	%
     4	% See http://www.w3.org/2002/05/positive-triples
     5	%
     6	% $Id: ax3.20020822T1630.html,v 1.1 2002/08/22 20:33:01 sandro Exp $
     7	%
     8	
     9	formula_list(usable).
    10	
    11	all O C1 C2 (
    12	  rdf(C1, daml_disjointWith, C2) &
    13	  rdf(O, rdf_type, C1) &
    14	  rdf(O, rdf_type, C2) 
    15	  ->   
    16	
    17	
    18	  malformed(foo(O,C1,C2), objectInDisjointClasses)
    19	).
    20	
    21	all O (
    22	  rdf(O, daml_differentIndividualFrom, O)
    23	  ->
    24	  malformed(O, objectsAreDifferentAndYetTheSame)
    25	).
    26	
    27	all A P1 P2 C (
    28	  rdf(A, P1, C) &
    29	  rdf(P1, daml_inversePropertyOf, P2)
    30	  ->
    31	  rdf(C, P2, A)
    32	).
    33	
    34	%   slows things down?
    35	%all X Y A B (
    36	%  rdf(X, daml_equivalentTo, Y) &
    37	%  rdf(X, A, B)
    38	%  ->
    39	%  rdf(Y, A, B)
    40	%).
    41	%all X Y A B (
    42	%  rdf(X, daml_equivalentTo, Y) &
    43	%  rdf(A, X, B)
    44	%  ->
    45	%  rdf(A, Y, B)
    46	%).
    47	%all X Y A B (
    48	%  rdf(X, daml_equivalentTo, Y) &
    49	%  rdf(A, B, X)
    50	%  ->
    51	%  rdf(A, B, Y)
    52	%).
    53	
    54	

File rx.otter

     1	%
     2	% RX Semantics (as much as I need, at least)
     3	%
     4	% See http://www.w3.org/2002/05/positive-triples
     5	%
     6	% $Id: ax3.20020822T1630.html,v 1.1 2002/08/22 20:33:01 sandro Exp $
     7	%
     8	
     9	formula_list(usable).
    10	
    11	% we can just say
    12	%   rdf(rx_superclass, daml_equivalentTo, rdfs_subClassOf).
    13	% and define daml_equivalentTo axioms, but that's way slow.
    14	
    15	all O Sub Super (
    16	  rdf(O, rdf_type, Sub) &
    17	  rdf(Sub, rx_superclass, Super)
    18	  -> 
    19	  rdf(O, rdf_type, Super)
    20	).
    21	
    22	

File rdfs.otter

     1	%
     2	% RDFS Semantics (as much as I need, at least)
     3	%
     4	% See http://www.w3.org/2002/05/positive-triples
     5	%
     6	% $Id: ax3.20020822T1630.html,v 1.1 2002/08/22 20:33:01 sandro Exp $
     7	%
     8	
     9	formula_list(usable).
    10	
    11	all S P O C (
    12	  rdf(P, rdfs_domain, C) &
    13	  rdf(S, P, O)
    14	  ->
    15	  rdf(S, rdf_type, C)
    16	).
    17	
    18	all S P O C (
    19	  rdf(P, rdfs_range, C) &
    20	  rdf(S, P, O)
    21	  ->
    22	  rdf(O, rdf_type, C)
    23	).
    24	
    25	all O Sub Super (
    26	  rdf(O, rdf_type, Sub) &
    27	  rdf(Sub, rdfs_subClassOf, Super)
    28	  -> 
    29	  rdf(O, rdf_type, Super)
    30	).
    31	
    32	

File ontology.otter

     1	include('pt-schema.otter').
     2	include('daml.otter').
     3	include('rx.otter').
     4	include('rdfs.otter').
     5	
     6	formula_list(usable).             % signal start of formulas
     7	
     8	
     9	
    10	% these might be called "comprehension" axioms
    11	
    12	% Every object can be denoted with a symbol
    13	all X (
    14	  denotation(symbolFor(X), X)
    15	).
    16	
    17	% Every symbol which denotes an object is a constant
    18	all S D (
    19	  denotation(S,D)
    20	  ->
    21	  isConstant(S)
    22	).
    23	
    24	% Every constant has a denotation
    25	all S (
    26	  isConstant(S)
    27	  ->
    28	  denotation(S, denotationOf(S))
    29	).
    30	
    31	% Every quantified formula has a possible constant replacement
    32	% for the variable
    33	all Var Child (
    34	  isConstant(ConstFor(Child, Var))
    35	).
    36	
    37	
    38	all Error Message (
    39	  -malformed(Error, Message)
    40	).

File recognition.otter

     1	formula_list(usable).             % signal start of formulas
     2	
     3	%%
     4	%%  Turn rdf(a,b,c) facts info into more convenient forms
     5	%%
     6	
     7	%%  Some day we may want to turn these into biconditionals, which
     8	%%  might let us draw out the triples-encoding of a formula, although
     9	%%  it would naturally include all our axioms....
    10	
    11	all T F A B C L R N D V X S
    12	((
    13	  rdf(T, pt_subjectTerm, A) &
    14	  rdf(T, pt_predicateTerm, B) &
    15	  rdf(T, pt_objectTerm, C)
    16	  <->
    17	  triple(T,A,B,C) 
    18	) & (
    19	  rdf(F, pt_conjLeft, L) &
    20	  rdf(F, pt_conjRight, R)
    21	  ->
    22	  conjunction(F,L,R) 
    23	) & (
    24	  rdf(F, pt_disjLeft, L) &
    25	  rdf(F, pt_disjRight, R)
    26	  ->
    27	  disjunction(F,L,R) 
    28	) & (
    29	  rdf(F, pt_condLeft, L) &
    30	  rdf(F, pt_condRight, R)
    31	  ->
    32	  conditional(F,L,R) 
    33	) & (
    34	  rdf(F, pt_bicondLeft, L) &
    35	  rdf(F, pt_bicondRight, R)
    36	  ->
    37	  biconditional(F,L,R) 
    38	) & (
    39	  rdf(F, pt_negated, N)
    40	  ->
    41	  negation(F,N) 
    42	) & (
    43	  rdf(F, pt_var, V) &
    44	  rdf(F, pt_subformula, S)
    45	  ->
    46	  quantification(F, V, S) 
    47	) & (
    48	  rdf(T, pt_denotation, D)
    49	  ->
    50	  denotation(T, D) 
    51	) & (
    52	  rdf(T, pt_denotation, X)
    53	  ->
    54	  isConstant(T) 
    55	) & (
    56	  rdf(T, rdf_type, pt_UniVar)	     
    57	  ->
    58	  isUniVar(T) 
    59	) & (
    60	  rdf(T, rdf_type, pt_ExiVar)	     
    61	  ->
    62	  isExiVar(T) 
    63	) & (
    64	  (isUniVar(T) | isExiVar(T))
    65	  ->
    66	  isVar(T) 
    67	) & (
    68	  rdf(F, rdf_type, pt_TrueSentence)
    69	  ->
    70	  trueSentence(F) 
    71	)).
    72	

File meaning.otter

     1	formula_list(usable).             % signal start of formulas
     2	
     3	
     4	%  Basic feedback from truth predicate
     5	all T A B C DenA DenB DenC (
     6	  triple(T, A, B, C) &
     7	  denotation(A, DenA) &
     8	  denotation(B, DenB) &
     9	  denotation(C, DenC)
    10	  ->
    11	  ( trueSentence(T) <-> rdf(DenA, DenB, DenC) )
    12	).
    13	
    14	%  Each contruct implies the obvious thing
    15	all F L R (
    16	  conjunction(F, L, R) ->
    17	  ( trueSentence(F) <-> ( trueSentence(L) & trueSentence(R)  ) )
    18	).
    19	all F L R (
    20	  disjunction(F, L, R) ->
    21	  ( trueSentence(F) <-> ( trueSentence(L) | trueSentence(R)  ) )
    22	).
    23	all F L R (
    24	  conditional(F, L, R) ->
    25	  ( trueSentence(F) <-> ( trueSentence(L) -> trueSentence(R)  ) )
    26	).
    27	all F L R (
    28	  biconditional(F, L, R) ->
    29	  ( trueSentence(F) <-> ( trueSentence(L) <-> trueSentence(R)  ) )
    30	).
    31	all F N (
    32	  negation(F, N) ->
    33	  ( trueSentence(F) <-> ( -trueSentence(N) ) )
    34	).
    35	
    36	% somewhat more complicated: quantification
    37	
    38	all Formula Var Const OldChild NewChild (
    39	  quantification(Formula, Var, OldChild) &
    40	  isUniVar(Var) & 
    41	  isConstant(Const) &  
    42	  subst(OldChild, NewChild, Var, Const) &
    43	  ground(NewChild) &
    44	  trueSentence(Formula)
    45	  ->
    46	  trueSentence(NewChild)
    47	).
    48	
    49	%  maybe doesn't work, maybe not needed...
    50	%all Formula Var OldChild NewChild (
    51	%  quantification(Formula, Var, OldChild) &
    52	%  isUniVar(Var) & 
    53	%  (all Object (
    54	%    trueSentence(NewChild) &
    55	%    denotation(Const, Object) &
    56	%    subst(OldChild, NewChild, Var, Const) &
    57	%    ground(NewChild)
    58	%  ))
    59	%  ->
    60	%  trueSentence(Formula)
    61	%).
    62	
    63	%  suspend....
    64	%all Formula Var OldChild NewChild (
    65	%  quantification(Formula, Var, OldChild) &
    66	%  isExiVar(Var) &
    67	%  isConstant(ConstFor(OldChild, Var)) &   
    68	%  subst(OldChild, NewChild, Var, ConstFor(OldChild, Var)) &
    69	%  ground(NewChild)
    70	%  ->
    71	%  ( trueSentence(Formula) <-> trueSentence(NewChild) )
    72	%).
    73	
    74	%    WORKS, BUT I'D RATHER SKOLEMIZE MYSELF
    75	%all F V S RS (
    76	%   quantification(F, V, S) &
    77	%   isExiVar(V) 
    78	%   -> 
    79	%   (exists RV (
    80	%     isConstant(RV) &
    81	%     subst(S, RS, V, RV) &
    82	%     ground(RS) &
    83	%     ( trueSentence(F) <-> trueSentence(RS) )
    84	%   ))
    85	%).
    86	 
    87	
    88	%   DOESN'T WORK:
    89	%all Formula Var OldChild NewChild (
    90	%  quantification(Formula, Var, OldChild) &
    91	%  isExiVar(Var) &
    92	%  isConstant(ConstFor(OldChild, Var)) &   
    93	%  subst(OldChild, NewChild, Var, ConstFor(OldChild, Var)) &
    94	%  ground(NewChild)
    95	%  ->
    96	%  ( trueSentence(Formula) <-> trueSentence(NewChild) )
    97	%).
    98	
    99	%   WORKS.   (the subst and ground have to be in the consequent.  why?)
   100	all Formula Var OldChild NewChild (
   101	  quantification(Formula, Var, OldChild) &
   102	  isExiVar(Var) &
   103	  isConstant(ConstFor(OldChild, Var))
   104	  ->
   105	  ( 
   106	    subst(OldChild, NewChild, Var, ConstFor(OldChild, Var)) &
   107	    ground(NewChild) &
   108	    ( trueSentence(Formula) <-> trueSentence(NewChild) )
   109	  )
   110	).

File subst.otter

     1	formula_list(usable).
     2	%%%
     3	%%%    Define Substitution
     4	%%%
     5	%%%    subst(OriginalFormula, ReplacementFormula,
     6	%%%          OriginalTerm, ReplacementTerm) 
     7	%%%
     8	%%%        is true if zero or more occurances of OriginalTerm
     9	%%%                   in OriginalFormula has been replaced
    10	%%%                   by ReplacementTerm in ReplacementFormula
    11	%%%
    12	%%%    substTerm has the same parameters except the
    13	%%%    formulas are the terms (occuring in the formulas).
    14	%%%
    15	
    16	% The degenerate "no replacement done" versions of substTerm and subst
    17	all SomeTerm OldTerm NewTerm (  substTerm(SomeTerm, SomeTerm, 
    18	                                          OldTerm, NewTerm)      ).  
    19	
    20	all SomeFormula OldTerm NewTerm (  subst(SomeFormula, SomeFormula, 
    21	                                         OldTerm, NewTerm)   ).
    22	
    23	% The replacement version of substTerm is simple:
    24	all OldTerm NewTerm (           substTerm(OldTerm, NewTerm, 
    25	                                          OldTerm, NewTerm)     ).
    26	
    27	
    28	%%                             Substitution In Triples
    29	all Formula OldTerm NewTerm  
    30	    A B C 
    31	    RA RB RC (
    32	  isConstant(NewTerm) &
    33	  triple(Formula, A, B, C) &
    34	  substTerm(A, RA, OldTerm, NewTerm) &
    35	  substTerm(B, RB, OldTerm, NewTerm) &
    36	  substTerm(C, RC, OldTerm, NewTerm)
    37	  ->
    38	%  this is perhaps clearer, but it has a much higher-arity skolemization
    39	%  ( exists RFormula (
    40	%      triple(RFormula, RA, RB, RC) &
    41	%      subst(Formula, RF, OldTerm, NewTerm)
    42	%  ))
    43	  triple(tripleOf(RA, RB, RC), RA, RB, RC) &
    44	  subst(Formula, tripleOf(RA, RB, RC), OldTerm, NewTerm)
    45	).
    46	
    47	
    48	%%                             Substitution In Conjunction
    49	all Formula OldTerm NewTerm L NewLeft R NewRight (
    50	  conjunction(Formula, L, R) &
    51	  subst(L, NewLeft, OldTerm, NewTerm) &
    52	  subst(R, NewRight, OldTerm, NewTerm) 
    53	  -> 
    54	  conjunction(conjunctionOf(NewLeft, NewRight), NewLeft, NewRight) &
    55	  subst(Formula, conjunctionOf(NewLeft, NewRight), OldTerm, NewTerm)
    56	).
    57	
    58	%%                             Substitution In Disjunction
    59	all Formula OldTerm NewTerm L NewLeft R NewRight (
    60	  disjunction(Formula, L, R) &
    61	  subst(L, NewLeft, OldTerm, NewTerm) &
    62	  subst(R, NewRight, OldTerm, NewTerm) 
    63	  -> 
    64	  disjunction(disjunctionOf(NewLeft, NewRight), NewLeft, NewRight) &
    65	  subst(Formula, disjunctionOf(NewLeft, NewRight), OldTerm, NewTerm)
    66	).
    67	
    68	%%                             Substitution In Conditional
    69	all Formula OldTerm NewTerm L NewLeft R NewRight (
    70	  conditional(Formula, L, R) &
    71	  subst(L, NewLeft, OldTerm, NewTerm) &
    72	  subst(R, NewRight, OldTerm, NewTerm) 
    73	  -> 
    74	  conditional(conditionalOf(NewLeft, NewRight), NewLeft, NewRight) &
    75	  subst(Formula, conditionalOf(NewLeft, NewRight), OldTerm, NewTerm)
    76	).
    77	
    78	%%                             Substitution In Biconditional
    79	all Formula OldTerm NewTerm L NewLeft R NewRight (
    80	  biconditional(Formula, L, R) &
    81	  subst(L, NewLeft, OldTerm, NewTerm) &
    82	  subst(R, NewRight, OldTerm, NewTerm) 
    83	  -> 
    84	  biconditional(biconditionalOf(NewLeft, NewRight), NewLeft, NewRight) &
    85	  subst(Formula, biconditionalOf(NewLeft, NewRight), OldTerm, NewTerm)
    86	).
    87	
    88	%%                             Substitution In Negation
    89	all Formula OldTerm NewTerm OldChild NewChild (
    90	  negation(Formula, OldChild) &
    91	  subst(OldChild, NewChild, OldTerm, NewTerm)
    92	  -> 
    93	  negation(negationOf(NewChild), NewChild) &
    94	  subst(Formula, negationOf(NewChild), OldTerm, NewTerm)
    95	).
    96	
    97	%%                             Substitution In Quantification
    98	all Formula OldTerm NewTerm Var OldChild NewChild (
    99	  quantification(Formula, Var, OldChild) &
   100	  subst(OldChild, NewChild, OldTerm, NewTerm) 
   101	  -> 
   102	  quantification(quantificationOf(Var,NewChild), Var, NewChild) &
   103	  subst(Formula, quantificationOf(Var,NewChild), OldTerm, NewTerm)
   104	).
   105	

File ground.otter

     1	formula_list(usable).
     2	%
     3	%  Ground Formulas
     4	%
     5	%  For the quantification axioms, we need to know when the Child
     6	%  formula has no more variables in it; we call that being a "ground"
     7	%  formula.   Here are the ground formulas:
     8	
     9	all T A B C AD BD CD (
    10	  triple(T, A, B, C) &
    11	  isConstant(A) &
    12	  isConstant(B) &
    13	  isConstant(C)
    14	  ->
    15	  ground(T)
    16	).
    17	
    18	all Formula L R (
    19	  conjunction(Formula, L, R) &
    20	  ground(L) &
    21	  ground(R) 
    22	  ->
    23	  ground(Formula)
    24	).    
    25	
    26	all Formula L R (
    27	  disjunction(Formula, L, R) &
    28	  ground(L) &
    29	  ground(R) 
    30	  ->
    31	  ground(Formula)
    32	).    
    33	
    34	all Formula L R (
    35	  conditional(Formula, L, R) &
    36	  ground(L) &
    37	  ground(R) 
    38	  ->
    39	  ground(Formula)
    40	).    
    41	
    42	all Formula L R (
    43	  biconditional(Formula, L, R) &
    44	  ground(L) &
    45	  ground(R) 
    46	  ->
    47	  ground(Formula)
    48	).    
    49	
    50	all Formula Child (
    51	  negation(Formula, Child) &
    52	  ground(Child)
    53	  ->
    54	  ground(Formula)
    55	).
    56	
    57	% this one is quite different; I don't know if it will be useful for
    58	% something....
    59	all Formula Var Child (
    60	  quantification(Formula, Var, Child)
    61	  ->
    62	  -ground(Formula)
    63	).

Sandro Hawke
Generated Thu Aug 22 16:30:54 EDT 2002