Code Monkey home page Code Monkey logo

Comments (6)

wceusters avatar wceusters commented on June 18, 2024

Reported by Stefan Schulz. It's declared transitive in the FOL, but in an oversight it wasn't on the list of transitive properties for which the OWL transitivity axiom was added.

Where is it in FOL, i.e. the ISO version? kad-1 declares it for occurrent-part-of with as consequence that if 'a pop b' and 'b pop c' only follows that 'a op c'.

from bfo-2020.

alanruttenberg avatar alanruttenberg commented on June 18, 2024

Sorry, my mistake - it's declared to be a theorem in the source from which the CL is generated, which is where I looked, and theorems are not included in the common logic. If follows from the definition of proper-occurrent-part-of, transitivity of occurrent-part-of and antisymmetry of occurrent-part-of: okr-1, kad-1, and xlu-1

It isn't in the OWL because all the OWL assertions are generated from specs and then verified provable, and the list for which there should be transitive assertions inadvertently omitted proper-occurrent-part-of. I've fixed the source but not regenerated the OWL yet.

If the forward relation is transitive, then that the inverse is transitive is also a theorem.

from bfo-2020.

alanruttenberg avatar alanruttenberg commented on June 18, 2024

I never trust myself to reason. Here's a transcript of what I did. First I ask to prove the transitivity. Then I ask for how it was proved, and it includes the antisymmetry. Then I try to prove it without transitivity. Then I ask for a model where the two axioms are true but the transitivity isn't.

>> (vampire-prove '((:kind :occurrent-mereology))
                 '(:forall (?x ?y ?z) (:implies (:and (proper-occurrent-part-of ?x ?y) (proper-occurrent-part-of ?y ?z))
                                          (proper-occurrent-part-of ?x ?z))))
:proved

>> (get-vampire-proof-support)

(:definition-of-proper-occurrent-part-of :occurrent-part-of-is-antisymmetric :occurrent-part-of-transitive)

>> (vampire-prove '(:definition-of-proper-occurrent-part-of :occurrent-part-of-transitive) 
                      '(:forall (?x ?y ?z) (:implies (:and (proper-occurrent-part-of ?x ?y) (proper-occurrent-part-of ?y ?z))
                                               (proper-occurrent-part-of ?x ?z))))

:failed

>> (z3-find-model '(:definition-of-proper-occurrent-part-of :occurrent-part-of-transitive 
                        (:not (:forall (?x ?y ?z) (:implies (:and (proper-occurrent-part-of ?x ?y) (proper-occurrent-part-of ?y ?z))
                                               (proper-occurrent-part-of ?x ?z))))))

#<z3-model domain size 3, 2 predicates, 15 tuples>

>> (pprint-model *)
(proper-occurrent-part-of c2 c3)
(proper-occurrent-part-of c2 c1)
(proper-occurrent-part-of c3 c2)
(proper-occurrent-part-of c3 c1)
(proper-occurrent-part-of c1 c2)
(proper-occurrent-part-of c1 c3)
(occurrent-part-of c2 c2)
(occurrent-part-of c2 c3)
(occurrent-part-of c2 c1)
(occurrent-part-of c3 c2)
(occurrent-part-of c3 c3)
(occurrent-part-of c3 c1)
(occurrent-part-of c1 c2)
(occurrent-part-of c1 c3)
(occurrent-part-of c1 c1)

from bfo-2020.

alanruttenberg avatar alanruttenberg commented on June 18, 2024

Here's a smaller model (courtesy of mace4)

(occurrent-part-of c1 c1)
(occurrent-part-of c1 c2)
(occurrent-part-of c2 c1)
(occurrent-part-of c2 c2)
(proper-occurrent-part-of c1 c2)
(proper-occurrent-part-of c2 c1)

from bfo-2020.

wceusters avatar wceusters commented on June 18, 2024

I realize that my earlier attempt to prove manually was wrong (printed here again since I accidently deleted the comment):
Proper-occurrent-part-of a b input (1)
Occurrent-part-of a b okr-1/(1) (2)
Not = a b okr-1/(1) (3)
Proper-occurrent-part-of b c input (4)
Occurrent-part-of b c okr-1/(4) (5)
Not = b c okr-1/(4) (6)
Occurrent-part-of a c kad-1/(2)/(5) (7)
Not = a c (3)/(6) (8)
Proper-occurrent-part-of a c okr-1/(8)/(7) !

(8) does not follow from (3) and (6) as under these, it would also be possible that a = c.

So assume a = c

assume = a c (8b)
proper-occurrent-part-of c b (1)/(8b) (9)
occurrent-part-of c b okr-1/(9) (10)
= c b xlu-1/(10)/(5) (11)
contradiction (11)/(6)

Thus assumption (8b) is wrong, hence not = a c where we are back above and thus proper-occurrent-part-of a c.

from bfo-2020.

alanruttenberg avatar alanruttenberg commented on June 18, 2024

fixed now

from bfo-2020.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.