Exemplo n.º 1
0
    def test_coins(self):
        fsm = self.coins()

        from pynusmv_tools.atlkPO.evalGen import split
        agents = {'a1', 'a2'}
        strats = split(fsm,
                       fsm.protocol(agents) & fsm.reachable_states,
                       agents,
                       semantics='individual')
        self.assertEqual(len(list(strats)), 64)

        self.assertFalse(
            check(fsm,
                  parseATLK("<'a1', 'a2'> F 'result = win'")[0],
                  semantics="individual"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'a1', 'a2'> F 'result = win'")[0],
                  semantics="individual",
                  variant="FSF"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'a1', 'a2'> F 'result = win'")[0],
                  semantics="individual",
                  variant="FS"))
Exemplo n.º 2
0
    def test_counters_FSF(self):
        fsm = self.counters()

        from pynusmv_tools.atlkPO.evalGen import split
        agents = {'a1', 'a2'}
        strats = split(fsm,
                       fsm.protocol(agents) & fsm.reachable_states,
                       agents,
                       semantics='individual')
        self.assertEqual(len(list(strats)), 16)

        config.partial.filtering = True
        self.assertTrue(
            check(fsm,
                  parseATLK("<'a1', 'a2'> F 'v1 & v2'")[0],
                  semantics="individual",
                  implem="partialSI"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'a1', 'a2'> G '!v1 & !v2'")[0],
                  semantics="individual",
                  implem="partialSI"))
        self.assertTrue(
            check(
                fsm,
                parseATLK("AG('!v1 & !v2' -> <'a1', 'a2'> G '!v1 | !v2')")[0],
                semantics="individual",
                implem="partialSI"))
        config.partial.filtering = False
Exemplo n.º 3
0
    def test_tpfni_partial_vs_normal(self):
        fsm = self.transmission_post_fair()

        self.assertTrue(check(fsm, parseATLK("<'sender'> F 'received'")[0]))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'sender'> F 'received'")[0],
                  implem="partial"))
Exemplo n.º 4
0
    def test_cardgame_post_fair_not_improved(self):
        fsm = self.cardgame_post_fair()

        self.assertTrue(
            check(fsm,
                  parseATLK(
                      "K<'player'>'pcard=none' & K<'player'>'dcard=none'")[0],
                  implem="partialSI",
                  semantics="individual"))
        self.assertTrue(
            check(
                fsm,
                parseATLK(
                    "AG('step = 1' -> ~(K<'player'> 'dcard=Ac' | K<'player'> 'dcard=K' | K<'player'> 'dcard=Q'))"
                )[0],
                implem="partialSI",
                semantics="individual"))

        self.assertTrue(
            check(fsm,
                  parseATLK("AG('step = 1' -> ~<'player'> X 'win')")[0],
                  implem="partialSI",
                  semantics="individual"))
        self.assertFalse(
            check(fsm,
                  parseATLK("['dealer'] F 'win'")[0],
                  implem="partialSI",
                  semantics="individual"))
        self.assertTrue(
            check(fsm,
                  parseATLK("['player'] X 'pcard=Ac'")[0],
                  implem="partialSI",
                  semantics="individual"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'dealer'> X 'pcard=Ac'")[0],
                  implem="partialSI",
                  semantics="individual"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'dealer'> G ~'win'")[0],
                  implem="partialSI",
                  semantics="individual"))

        # Player can win
        self.assertTrue(
            check(fsm,
                  parseATLK("<'player'> F 'win'")[0],
                  implem="partialSI",
                  semantics="individual"))
        # Dealer can avoid fairness
        self.assertTrue(
            check(fsm,
                  parseATLK("<'dealer'> F 'FALSE'")[0],
                  implem="partialSI",
                  semantics="individual"))
Exemplo n.º 5
0
    def test_cardgame_post_fair_improved_symbolic(self):
        fsm = self.cardgame_post_fair()

        self.assertFalse(
            check(fsm,
                  parseATLK("<'player'> X 'win'")[0],
                  implem="symbolic",
                  variant="FSF"))

        self.assertTrue(
            check(fsm,
                  parseATLK(
                      "K<'player'>'pcard=none' & K<'player'>'dcard=none'")[0],
                  implem="symbolic",
                  variant="FSF"))
Exemplo n.º 6
0
    def test_cardgame_post_fair_improved_symbolic3(self):
        fsm = self.cardgame_post_fair()

        self.assertTrue(
            check(fsm,
                  parseATLK("AG('step = 1' -> ~<'player'> X 'win')")[0],
                  implem="symbolic",
                  variant="FSF"))
Exemplo n.º 7
0
    def test_cardgame_post_fair_improved_symbolic4(self):
        fsm = self.cardgame_post_fair()

        self.assertTrue(
            check(fsm,
                  parseATLK("['player'] X 'pcard=Ac'")[0],
                  implem="symbolic",
                  variant="FSF"))
Exemplo n.º 8
0
    def test_cardgame_post_fair_improved_symbolic6(self):
        fsm = self.cardgame_post_fair()

        self.assertTrue(
            check(fsm,
                  parseATLK("<'dealer'> G ~'win'")[0],
                  implem="symbolic",
                  variant="FSF"))
Exemplo n.º 9
0
    def test_cardgame_post_fair_improved_symbolic11(self):
        fsm = self.cardgame_post_fair()

        self.assertTrue(
            check(fsm,
                  parseATLK("<'player'> F <'player'>[~'lose' U 'win']")[0],
                  implem="symbolic",
                  variant="FSF"))
Exemplo n.º 10
0
    def test_cardgame_post_fair_improved_symbolic12(self):
        fsm = self.cardgame_post_fair()

        self.assertFalse(
            check(fsm,
                  parseATLK("['dealer'] F 'win'")[0],
                  implem="symbolic",
                  variant="FSF"))
Exemplo n.º 11
0
    def test_cardgame_post_fair_improved_symbolic7(self):
        fsm = self.cardgame_post_fair()

        # Player can win
        self.assertTrue(
            check(fsm,
                  parseATLK("<'player'> F 'win'")[0],
                  implem="symbolic",
                  variant="FSF"))
Exemplo n.º 12
0
    def test_cardgame_post_fair_improved_symbolic8(self):
        fsm = self.cardgame_post_fair()

        # Dealer can avoid fairness
        self.assertTrue(
            check(fsm,
                  parseATLK("<'dealer'> F 'FALSE'")[0],
                  implem="symbolic",
                  variant="FSF"))
Exemplo n.º 13
0
    def test_cardgame_post_fair_improved_symbolic9(self):
        fsm = self.cardgame_post_fair()

        self.assertTrue(
            check(fsm,
                  parseATLK("EG ~'win'")[0],
                  implem="symbolic",
                  variant="FSF"))
        self.assertTrue(
            check(fsm,
                  parseATLK("EF 'win'")[0],
                  implem="symbolic",
                  variant="FSF"))
        self.assertFalse(
            check(fsm,
                  parseATLK("AF 'win'")[0],
                  implem="symbolic",
                  variant="FSF"))
Exemplo n.º 14
0
    def test_cardgame_post_fair_improved_symbolic2(self):
        fsm = self.cardgame_post_fair()

        self.assertTrue(
            check(
                fsm,
                parseATLK(
                    "AG('step = 1' -> ~(K<'player'> 'dcard=Ac' | K<'player'> 'dcard=K' | K<'player'> 'dcard=Q'))"
                )[0],
                implem="symbolic",
                variant="FSF"))
Exemplo n.º 15
0
    def test_transmission_post_fair_not_improved(self):
        fsm = self.transmission_post_fair()

        self.assertTrue(
            check(fsm,
                  parseATLK("<'sender'> F 'received'")[0],
                  semantics="individual"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> G ~'received'")[0],
                  semantics="individual"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> X 'received'")[0],
                  semantics="individual"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> X ~'received'")[0],
                  semantics="individual"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> F 'received'")[0],
                  semantics="individual"))

        # False because the sender does not know if the bit is already
        # transmitted (and in this case, no strategy can avoid 'received')
        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> G ~'received'")[0],
                  semantics="individual"))
Exemplo n.º 16
0
    def test_transmission_not_improved(self):
        fsm = self.transmission()

        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> F 'received'")[0],
                  semantics="individual"))
        # False because transmitter cannot win if received is already true
        # and he has no clue about it
        self.assertFalse(
            check(fsm,
                  parseATLK("<'transmitter'> G ~'received'")[0],
                  semantics="individual"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> X 'received'")[0],
                  semantics="individual"))
        # False because transmitter cannot win if received is already true
        # and he has no clue about it
        self.assertFalse(
            check(fsm,
                  parseATLK("<'transmitter'> X ~'received'")[0],
                  semantics="individual"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'transmitter'> F 'received'")[0],
                  semantics="individual"))

        # False because the sender does not know if the bit is already
        # transmitted (and in this case, no strategy can avoid 'received')
        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> G ~'received'")[0],
                  semantics="individual"))
Exemplo n.º 17
0
    def test_cardgame_FSF(self):
        fsm = self.cardgame()

        self.assertTrue(
            check(fsm,
                  parseATLK("<'dealer'> X 'pcard=Ac'")[0],
                  variant="FSF",
                  semantics="individual"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'dealer'> G ~'win'")[0],
                  variant="FSF",
                  semantics="individual"))
        self.assertTrue(
            check(fsm,
                  parseATLK("AG('step = 1' -> ~<'player'> X 'win')")[0],
                  variant="FSF",
                  semantics="individual"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'player'> F 'win'")[0],
                  variant="FSF",
                  semantics="individual"))

        self.assertTrue(
            check(fsm,
                  parseATLK("['player'] X 'pcard=Ac'")[0],
                  variant="FSF",
                  semantics="individual"))
        self.assertTrue(
            check(fsm,
                  parseATLK("['dealer'] F 'win'")[0],
                  variant="FSF",
                  semantics="individual"))
Exemplo n.º 18
0
    def test_transmission_with_know_FSF(self):
        fsm = self.transmission_with_knowledge()

        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> F 'received'")[0],
                  variant="FSF",
                  semantics="individual"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> G ~'received'")[0],
                  variant="FSF",
                  semantics="individual"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> X 'received'")[0],
                  variant="FSF",
                  semantics="individual"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> X ~'received'")[0],
                  variant="FSF",
                  semantics="individual"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'transmitter'> F 'received'")[0],
                  variant="FSF",
                  semantics="individual"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'sender'> G ~'received'")[0],
                  variant="FSF",
                  semantics="individual"))
Exemplo n.º 19
0
    def test_transmission_with_know_not_improved(self):
        fsm = self.transmission_with_knowledge()

        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> F 'received'")[0],
                  implem="partialSI",
                  semantics="individual"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> G ~'received'")[0],
                  implem="partialSI",
                  semantics="individual"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> X 'received'")[0],
                  implem="partialSI",
                  semantics="individual"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> X ~'received'")[0],
                  implem="partialSI",
                  semantics="individual"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'transmitter'> F 'received'")[0],
                  implem="partialSI",
                  semantics="individual"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'sender'> G ~'received'")[0],
                  implem="partialSI",
                  semantics="individual"))
Exemplo n.º 20
0
    def test_transmission_with_know_improved_partial_univ_only(self):
        fsm = self.transmission_with_knowledge()
        config.partial.alternate.type = {"univ"}

        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> G ~'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> F 'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> X 'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> X ~'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'transmitter'> F 'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'sender'> G ~'received'")[0],
                  implem="partial",
                  variant="FS"))
Exemplo n.º 21
0
    def test_transmission_with_know_improved_partial(self):
        fsm = self.transmission_with_knowledge()

        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> G ~'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> F 'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> X 'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> X ~'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'transmitter'> F 'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'sender'> G ~'received'")[0],
                  implem="partial",
                  variant="FS"))
Exemplo n.º 22
0
    def test_transmission_with_know_not_improved_symbolic(self):
        fsm = self.transmission_with_knowledge()

        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> F 'received'")[0],
                  implem="symbolic"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> G ~'received'")[0],
                  implem="symbolic"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> X 'received'")[0],
                  implem="symbolic"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> X ~'received'")[0],
                  implem="symbolic"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'transmitter'> F 'received'")[0],
                  implem="symbolic"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'sender'> G ~'received'")[0],
                  implem="symbolic"))
Exemplo n.º 23
0
 def test_cardgame_post_fair_early_filtering(self):
     fsm = self.cardgame_post_fair()
     
     config.partial.filtering = True
     
     self.assertTrue(check(fsm, parseATLK("AG('step = 1' -> ~<'player'> X 'win')")[0], variant="FS", implem="partialSI", semantics="individual"))
     
     self.assertTrue(check(fsm, parseATLK("K<'player'>'pcard=none' & K<'player'>'dcard=none'")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("AG('step = 1' -> ~(K<'player'> 'dcard=Ac' | K<'player'> 'dcard=K' | K<'player'> 'dcard=Q'))")[0], variant="FS", implem="partialSI", semantics="individual"))
     
     self.assertFalse(check(fsm, parseATLK("['dealer'] F 'win'")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("['player'] X 'pcard=Ac'")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("<'dealer'> X 'pcard=Ac'")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("<'dealer'> G ~'win'")[0], variant="FS", implem="partialSI", semantics="individual"))
     
     # Player can win
     self.assertTrue(check(fsm, parseATLK("<'player'> F 'win'")[0], variant="FS", implem="partialSI", semantics="individual"))
     # Dealer can avoid fairness
     self.assertTrue(check(fsm, parseATLK("<'dealer'> F 'FALSE'")[0], variant="FS", implem="partialSI", semantics="individual"))
     
     config.partial.filtering = False
Exemplo n.º 24
0
 def test_transmission_with_know_early_filtering(self):
     fsm = self.transmission_with_knowledge()
     
     config.partial.filtering = True
     
     self.assertFalse(check(fsm, parseATLK("<'sender'> F 'received'")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("<'transmitter'> G ~'received'")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertFalse(check(fsm, parseATLK("<'sender'> X 'received'")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("<'transmitter'> X ~'received'")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertFalse(check(fsm, parseATLK("<'transmitter'> F 'received'")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("<'sender'> G ~'received'")[0], variant="FS", implem="partialSI", semantics="individual"))
     
     config.partial.filtering = False
Exemplo n.º 25
0
 def test_cardgame_early_filtering(self):
     fsm = self.cardgame()
     
     config.partial.filtering = True
     self.assertFalse(check(fsm, parseATLK("<'player'> F 'win'")[0], variant="FS", implem="partialSI", semantics="individual"))        
     self.assertTrue(check(fsm, parseATLK("AG('step = 1' -> ~<'player'> X 'win')")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("<'dealer'> X 'pcard=Ac'")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertFalse(check(fsm, parseATLK("<'dealer'> G ~'win'")[0], variant="FS", implem="partialSI", semantics="individual"))
     
     self.assertTrue(check(fsm, parseATLK("['player'] X 'pcard=Ac'")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("['dealer'] F 'win'")[0], variant="FS", implem="partialSI", semantics="individual"))
     
     config.partial.filtering = False
Exemplo n.º 26
0
 def test_transmission_post_fair_early_filtering(self):
     fsm = self.transmission_post_fair()
     
     config.partial.filtering = True
     
     self.assertTrue(check(fsm, parseATLK("<'sender'> F 'received'")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("<'transmitter'> G ~'received'")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertFalse(check(fsm, parseATLK("<'sender'> X 'received'")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("<'transmitter'> X ~'received'")[0], variant="FS", implem="partialSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("<'transmitter'> F 'received'")[0], variant="FS", implem="partialSI", semantics="individual"))
     
     # False because the sender does not know if the bit is already
     # transmitted (and in this case, no strategy can avoid 'received')
     self.assertFalse(check(fsm, parseATLK("<'sender'> G ~'received'")[0], variant="FS", implem="partialSI", semantics="individual"))
     
     config.partial.filtering = False
Exemplo n.º 27
0
 def test_cardgame_not_improved(self):
     fsm = self.cardgame()
     
     self.assertTrue(check(fsm, parseATLK("K<'player'>'pcard=none' & K<'player'>'dcard=none'")[0], implem="generatorSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("AG('step = 1' -> ~(K<'player'> 'dcard=Ac' | K<'player'> 'dcard=K' | K<'player'> 'dcard=Q'))")[0], implem="generatorSI", semantics="individual"))
     
     self.assertTrue(check(fsm, parseATLK("<'dealer'> X 'pcard=Ac'")[0], implem="generatorSI", semantics="individual"))
     self.assertFalse(check(fsm, parseATLK("<'dealer'> G ~'win'")[0], implem="generatorSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("['player'] X 'pcard=Ac'")[0], implem="generatorSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("['dealer'] F 'win'")[0], implem="generatorSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("AG('step = 1' -> ~<'player'> X 'win')")[0], implem="generatorSI", semantics="individual"))
     self.assertFalse(check(fsm, parseATLK("<'player'> F 'win'")[0], implem="generatorSI", semantics="individual"))
     
     self.assertTrue(check(fsm, parseATLK("EG ~'win'")[0], implem="generatorSI", semantics="individual"))
     self.assertTrue(check(fsm, parseATLK("EF 'win'")[0], implem="generatorSI", semantics="individual"))
     self.assertFalse(check(fsm, parseATLK("AF 'win'")[0], implem="generatorSI", semantics="individual"))
Exemplo n.º 28
0
    def test_transmission_post_fair_improved_partial_univ_only(self):
        fsm = self.transmission_post_fair()
        config.partial.alternate.type = {"univ"}

        self.assertTrue(
            check(fsm,
                  parseATLK("<'sender'> F 'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> G ~'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> X 'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> X ~'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'transmitter'> F 'received'")[0],
                  implem="partial",
                  variant="FS"))

        # False because the sender does not know if the bit is already
        # transmitted (and in this case, no strategy can avoid 'received')
        self.assertFalse(
            check(fsm,
                  parseATLK("<'sender'> G ~'received'")[0],
                  implem="partial",
                  variant="FS"))

        self.assertTrue(
            check(fsm,
                  parseATLK("EF 'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertTrue(
            check(fsm,
                  parseATLK("EG ~'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertFalse(
            check(fsm,
                  parseATLK("AG ~'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertFalse(
            check(fsm,
                  parseATLK("AF 'received'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertTrue(
            check(fsm,
                  parseATLK("AF ~'received'")[0],
                  implem="partial",
                  variant="FS"))
Exemplo n.º 29
0
    def test_cardgame_not_improved_partial(self):
        fsm = self.cardgame()

        self.assertTrue(
            check(fsm,
                  parseATLK(
                      "K<'player'>'pcard=none' & K<'player'>'dcard=none'")[0],
                  implem="partial"))
        self.assertTrue(
            check(
                fsm,
                parseATLK(
                    "AG('step = 1' -> ~(K<'player'> 'dcard=Ac' | K<'player'> 'dcard=K' | K<'player'> 'dcard=Q'))"
                )[0],
                implem="partial"))

        self.assertTrue(
            check(fsm,
                  parseATLK("<'dealer'> X 'pcard=Ac'")[0],
                  implem="partial"))
        self.assertFalse(
            check(fsm, parseATLK("<'dealer'> G ~'win'")[0], implem="partial"))
        self.assertTrue(
            check(fsm,
                  parseATLK("['player'] X 'pcard=Ac'")[0],
                  implem="partial"))
        self.assertTrue(
            check(fsm, parseATLK("['dealer'] F 'win'")[0], implem="partial"))
        self.assertTrue(
            check(fsm,
                  parseATLK("AG('step = 1' -> ~<'player'> X 'win')")[0],
                  implem="partial"))
        self.assertFalse(
            check(fsm, parseATLK("<'player'> F 'win'")[0], implem="partial"))

        self.assertTrue(check(fsm, parseATLK("EG ~'win'")[0],
                              implem="partial"))
        self.assertTrue(check(fsm, parseATLK("EF 'win'")[0], implem="partial"))
        self.assertFalse(check(fsm, parseATLK("AF 'win'")[0],
                               implem="partial"))

        self.assertFalse(
            check(fsm,
                  parseATLK("<'player'> G <'player'> F 'win'")[0],
                  implem="partial"))

        self.assertFalse(
            check(fsm,
                  parseATLK("<'player'> F <'player'>[~'lose' U 'win']")[0],
                  implem="partial"))

        self.assertFalse(
            check(fsm,
                  parseATLK("AG <'player'> X 'pcard = Ac'")[0],
                  implem="partial"))
Exemplo n.º 30
0
    def test_cardgame_post_fair_improved_partial_univ_only(self):
        fsm = self.cardgame_post_fair()
        config.partial.alternate.type = {"univ"}

        self.assertFalse(
            check(fsm,
                  parseATLK("<'player'> X 'win'")[0],
                  implem="partial",
                  variant="FS"))

        self.assertTrue(
            check(fsm,
                  parseATLK(
                      "K<'player'>'pcard=none' & K<'player'>'dcard=none'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertTrue(
            check(
                fsm,
                parseATLK(
                    "AG('step = 1' -> ~(K<'player'> 'dcard=Ac' | K<'player'> 'dcard=K' | K<'player'> 'dcard=Q'))"
                )[0],
                implem="partial",
                variant="FS"))

        self.assertTrue(
            check(fsm,
                  parseATLK("AG('step = 1' -> ~<'player'> X 'win')")[0],
                  implem="partial",
                  variant="FS"))
        self.assertFalse(
            check(fsm,
                  parseATLK("['dealer'] F 'win'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertTrue(
            check(fsm,
                  parseATLK("['player'] X 'pcard=Ac'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'dealer'> X 'pcard=Ac'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertTrue(
            check(fsm,
                  parseATLK("<'dealer'> G ~'win'")[0],
                  implem="partial",
                  variant="FS"))

        # Player can win
        self.assertTrue(
            check(fsm,
                  parseATLK("<'player'> F 'win'")[0],
                  implem="partial",
                  variant="FS"))
        # Dealer can avoid fairness
        self.assertTrue(
            check(fsm,
                  parseATLK("<'dealer'> F 'FALSE'")[0],
                  implem="partial",
                  variant="FS"))

        self.assertTrue(
            check(fsm,
                  parseATLK("EG ~'win'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertTrue(
            check(fsm,
                  parseATLK("EF 'win'")[0],
                  implem="partial",
                  variant="FS"))
        self.assertFalse(
            check(fsm,
                  parseATLK("AF 'win'")[0],
                  implem="partial",
                  variant="FS"))

        self.assertTrue(
            check(fsm,
                  parseATLK("<'player'> G <'player'> F 'win'")[0],
                  implem="partial",
                  variant="FS"))

        self.assertTrue(
            check(fsm,
                  parseATLK("<'player'> F <'player'>[~'lose' U 'win']")[0],
                  implem="partial",
                  variant="FS"))