Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Feb 19 17:07
    fachammer synchronize #741
  • Feb 19 17:07

    fachammer on dls-algorithm-for-formula-equations

    improve criterion in documentat… (compare)

  • Feb 18 16:42
    fachammer synchronize #741
  • Feb 18 16:42

    fachammer on dls-algorithm-for-formula-equations

    improve solveFormulaEquation -… remove unnecessary code fix formatting and 4 more (compare)

  • Feb 12 20:20
    Jenkins nightly build failure
  • Feb 12 20:03
    Jenkins nightly build failure
  • Feb 06 13:56
    Travis gapt/gapt (dls-algorithm-for-formula-equations) passed (4032)
  • Feb 06 13:24
    fachammer synchronize #741
  • Feb 06 13:24

    fachammer on dls-algorithm-for-formula-equations

    put advanced simplify into solv… (compare)

  • Feb 05 19:35
    jvierling labeled #742
  • Feb 05 19:29
    jvierling labeled #744
  • Feb 05 19:26
    jvierling assigned #744
  • Feb 05 19:26
    jvierling opened #744
  • Feb 05 19:18
    jvierling commented #741
  • Feb 05 15:43
    jvierling commented #741
  • Feb 05 14:17
    shetzl commented #741
  • Feb 05 14:13
    fachammer commented #741
  • Feb 04 09:42
    Travis gapt/gapt#741 errored (4031)
  • Feb 04 09:41
    Travis gapt/gapt (dls-algorithm-for-formula-equations) errored (4030)
  • Feb 04 09:13
    fachammer synchronize #741
Gabriel Ebner
@gebner
No, happy easter!
Ermine516
@Ermine516
If so I can bring it with me and we can discuss
:D, ah yes that is why I was on vacation, right.
Happy easter to you too
see you next week then
Gabriel Ebner
@gebner
Next week is labor day.
Ermine516
@Ermine516
ok, I should look at my calendar then
Andreas H. From
@andreasfrom
@gebner Sorry, didn't see your message. I only ran some stuff yesterday. If you need it today and tomorrow please let me know.
Gabriel Ebner
@gebner
Nah, everything's already done now. Also the deadline got extended by two weeks, so I'm no longer in such a hurry either.
Stefan Hetzl
@shetzl
@Ermine516 The next regular gapt meeting is scheduled for May 15.
Andreas H. From
@andreasfrom

I have a question about importing TIP problems. The file tip2015/list_return_2.smt2 looks like this:

; List monad laws
(declare-datatypes (a)
  ((list (nil) (cons (head a) (tail (list a))))))
(define-fun (par (a) (return ((x a)) (list a) (cons x (_ nil a)))))
(define-fun-rec
  (par (a)
    (++
       ((x (list a)) (y (list a))) (list a)
       (match x
         (case nil y)
         (case (cons z xs) (cons z (++ xs y)))))))
(define-fun-rec
  (par (a b)
    (>>=
       ((x (list a)) (y (=> a (list b)))) (list b)
       (match x
         (case nil (_ nil b))
         (case (cons z xs) (++ (@ y z) (>>= xs y)))))))
(prove
  (par (a)
    (forall ((xs (list a)))
      (= (>>= xs (lambda ((x a)) (return x))) xs))))

and after fixupAndLoad becomes:

∀x0 ∀x1 head(cons(x0, x1)) = x0,
∀x0 ∀x1 tail(cons(x0, x1)) = x1,
∀x return(x) = cons(x, nil),
lam2 = lam,
∀y ++(nil, y) = y,
∀y ∀z ∀xs ++(cons(z, xs), y) = cons(z, ++(xs, y)),
∀y >>=(nil, y) = nil,
∀y ∀z ∀xs >>=(cons(z, xs), y) = ++(apply1(y, z), >>=(xs, y)),
∀y0 ∀y1 nil != cons(y0, y1),
∀x apply1(lam, x) = return(x)
⊢
∀xs >>=(xs, lam2) = xs
So the apply1 must be introduced by the tip tool, but it does not show up in TipProblem.functions which I am using to generate reduction rules for testing.
Jannik Vierling
@jvierling
The symbol apply1 is stored in TipProblem.uninterpretedConsts, because it has no definition.
Andreas H. From
@andreasfrom
Why doesn't ∀x apply1(lam, x) = return(x) constitute a definition?
Jannik Vierling
@jvierling
Actually by definition I meant a definition in terms of define-fun or define-fun-rec or define-funs-rec. Actually the tip tool adds the definition that you gave as an assertion with a :definition keyword, but currently the tip importer does not inspect these keywords.
Andreas H. From
@andreasfrom
Oh right. Okay, thank you.
Jannik Vierling
@jvierling
Next week when I am back i'll try to spend some time to improve the tip importer.
Andreas H. From
@andreasfrom
It's not urgent for my purposes.
Andreas H. From
@andreasfrom

Here's an update:

mode
analytic_independent    43
analytic_sequential     75
spind                   34
treegrammar             16

All the problems solved by the analytic independent mode are affected by the tip importer thing mentioned above which makes my testing of conjectures less efficient or straight up breaks it. Three of them are solved if I just disable testing.

Spind is currently a little slower in total on the problems they have in common:

spind                118,666ms
analytic_independent 93,527ms
Gabriel Ebner
@gebner
@andreasfrom I'm going to use clogic89 over the weekend again.
Andreas H. From
@andreasfrom
@gebner roger.
Andreas H. From
@andreasfrom
@shetzl We talked about going to and from an expansion proof to reduce the proof, but I've got one here (for isaplanner/prop_57.smt2) which has around 2000 steps as an LK proof and going back from expansion to LK is taking more than 20 minutes. So that doesn't seem feasible(?)
Andreas H. From
@andreasfrom
Wait, I realised I could cleanStructuralRules it first and then it roundtrips quickly.
Stefan Hetzl
@shetzl
@andreasfrom Yes, cleanStructuralRules should always be cheap.
Jannik Vierling
@jvierling
@gebner How are our substitutions on term and types supposed to behave when one substitutes both term-level variables and type variables simultaneously? Should type variables be substituted before substituting the term variables?
@gebner I am asking this because I ran into a problem with the syntactic unification where the resulting substitution does not unfiy the expressions but I am not sure whether this is a bug in the unification algorithm or in the way the substitution is applied to the term.
@gebner Here is the example
object Example extends scala.App {

  implicit var ctx = Context()

  ctx += hoc"P{?a}: ?a > o"
  ctx += Ti
  ctx += hoc"c:i"

  val t1 = le"P(x:?a)"
  val t2 = le"P(c)"
  val Some( subst ) = syntacticMGU( t1, t2 )
  require( subst( t1 ) == subst( t2 ) )
}
Gabriel Ebner
@gebner
They are supposed to be applied simultaneously. For example you might have a substitution ?a -> list ?b, (x: ?a) -> (nil : list ?b).
Gabriel Ebner
@gebner
Yes, syntacticMGU is buggy here. There are at least two issues with type variables there. Do you want to look into it, or should I just push the fix?
Jannik Vierling
@jvierling
I will look into it.
Jannik Vierling
@jvierling
@gebner Why is hof"⊤" not considered to be an Atom (hof"⊤".asInstanceOf[Atom] fails) ?
Gabriel Ebner
@gebner
Because it's a logical connective.
Treating true/false as atoms can easily lead to bugs: e.g. gapt/gapt#309 If they are not atoms, it's clear that you need to treat them specially.
Jannik Vierling
@jvierling
Ok thanks.
Jannik Vierling
@jvierling
@gebner How does Escargot deal with and ? Does it avoid to generate these connectives? The problem is that at some point a ends up as a component by splitting but it is apparently not meant to be there.
Gabriel Ebner
@gebner
There should not be any ⊤ or ⊥ left after clausification.
But for first-order problems, clausification happens before the main loop is even started.
Jannik Vierling
@jvierling
I am running Escargot on a tip problem which uses formulas on term level, this introduces ⊤ after clausificiation.
Gabriel Ebner
@gebner
Goodbye completeness, I think. But yeah, I'd just add the clausification inference rule and see what happens.
Jannik Vierling
@jvierling
I'll try to integrate the clausification ( simplification of ⊤ and ⊥) with the saturation loop.
Jannik Vierling
@jvierling
I think these positions are the positions of some subterms of the forms_ in c_2.conclusion(i2). Is that correct?
Gabriel Ebner
@gebner
The first line of the function arguments describes the equation (i1th formula in clause c1, we want to rewrite t_ to s_), the second line describes the other clause that we want to rewrite (i2th formula in clause c2). pos2 are positions in c2.conclusion(i2) that can be unified with t_ (the left-hand side of the equation, if leftToRight is true). https://github.com/gapt/gapt/blob/2c46e4e159b34fd24969bba15c39b6f02ddbb1a7/core/src/main/scala/gapt/provers/escargot/inferences.scala#L460 These positions are then replaced by the right-hand side of the equation, i.e., mgu(s_).
Andreas H. From
@andreasfrom
If I run ./viper.sh --analytic isaplanner/prop_17.smt2 it fails with a gapt.proofs.gaptic.TacticFailureException and the message goal is not subsumed by provided proof:. This also affects at least prop_25, 33 and 34 and is the same for the spind mode. Is this is a known thing?
Jannik Vierling
@jvierling
@andreasfrom Thanks for reporting this. I fixed the problem.
Andreas H. From
@andreasfrom
@shetzl Generalization only makes a difference for one file: prod/prop_15. Removing testing means going from 127 solved to 97.
Gabriel Ebner
@gebner
@andreasfrom What are your plans for clogic89 for the next few days? Can I have it?
Andreas H. From
@andreasfrom
@gebner Yes, knock yourself out.