इसे संख्या सिद्धांत शैली में लिखें


19

प्रतीकों का उपयोग करके एक गणितीय कथन लिखें:

  • There exists at least one non-negative integer(के रूप में लिखा है E, अस्तित्वमान मात्रात्मक)
  • All non-negative integers( Aयूनिवर्सल क्वांटिफायर के रूप में लिखा गया है )
  • + (इसके अलावा)
  • * (गुणा)
  • = (समानता)
  • >, <(तुलना ऑपरेटरों)
  • &(और), |(या), !(नहीं)
  • (, )(समूह के लिए)
  • चर नाम

जो कथन के समतुल्य है

इसमें एक परिमेय संख्या a मौजूद है, जैसे कि r + e * a तर्कसंगत।

(बेशक, π=3.1415 ... गणितीय स्थिरांक परिधि एक वृत्त के व्यास से विभाजित करने के लिए बराबर है, और e=2.7182... है यूलर की संख्या )

आपको यह साबित करना होगा कि आपका बयान वास्तव में उपरोक्त कथन के बराबर है।

जाहिर है, इस बारे में जाने के लिए "सबसे छोटा" तरीका कथन को सही या गलत साबित करना है, और फिर तुच्छ रूप से सच या गलत बयान के साथ जवाब देना है, क्योंकि सभी सच्चे बयान एक दूसरे के बराबर हैं, जैसा कि सभी झूठे कथन हैं।

हालांकि, दिए गए बयान की सच्चाई मूल्य एक है गणित में अनसुलझी समस्या : हम यह भी नहीं जानते कि अगर π+ तर्कहीन है! इसलिए, गणितीय शोध को ध्यान में रखते हुए, चुनौती एक "सरल" समकक्ष कथन को खोजने के लिए है, इसके समकक्ष साबित करें, और इसे यथासंभव संक्षिप्त रूप से वर्णन करें।

स्कोरिंग

E A + * = > < & |और !प्रत्येक स्कोर में 1 जोड़ते हैं। (और )स्कोर में कुछ भी न जोड़ें। प्रत्येक चर नाम स्कोर में 1 जोड़ता है।

ईजी E x (A ba x+ba>x*(x+ba))स्कोर 13 ( E x A ba x + ba > x * x + ba)

सबसे कम स्कोर जीतता है।


ध्यान दें:

डिस्क्लेमर: यह नोट ओपी द्वारा नहीं लिखा गया था।

  • यह वह जगह है नहीं एक चुनौती। उत्तर में कोड सम्‍मिलित करने की आवश्‍यकता नहीं है।
  • यह एक चुनौती के समान है, लेकिन जैसा कि आपको एक बयान लिखने और इसे अन्य कथन के बराबर साबित करने की आवश्यकता है।
  • यदि आप ऊपर दिए गए कथन को सत्य / गलत साबित कर सकते हैं तो आपको एक तुच्छ-सत्य (जैसे, सभी x, x = x Ax x=x) या एक तुच्छ-गलत कथन (जैसे, सभी x, x> x Ax x>x) के लिए सबमिट करने की अनुमति है ।
  • आपको अतिरिक्त प्रतीकों (प्रूफ-गोल्फ में लेम्मा के समान) का उपयोग करने की अनुमति है, लेकिन स्कोर को उसी तरह से गिना जाएगा जैसा आप उनका उपयोग कर रहे हैं।
    उदाहरण के लिए, यदि आप a => bमाध्य में परिभाषित करते हैं, तो (!a) | bप्रत्येक बार जब आप =>अपने प्रमाण में उपयोग करते हैं, तो आपका स्कोर 2 से बढ़ जाता है।
  • क्योंकि स्थिर प्रतीकों को सूचीबद्ध प्रतीकों में सूचीबद्ध नहीं किया गया है, इसलिए आपको उनका उपयोग नहीं करना चाहिए।
    उदाहरण के लिए: कथन के 1 > 0रूप में लिखा जा सकता है

    
    Forall zero: ( zero + zero = zero ) =>
    Forall one: ( Forall x: x * one = x ) =>
    one > zero
    

    23 के स्कोर पर। (याद रखें कि =>प्रति उपयोग 2 लागत)।

संकेत

  • प्राकृतिक स्थिरांक का उपयोग करने के लिए, आप कर सकते हैं E0, 0+0=0 & E1, At 1*t=t &(ताकि आपको =>अधिक विस्तारक की आवश्यकता न हो ); 1 से बड़ी संख्या के लिए, बस कुछ 1 जोड़ें

5
मुझे यहां की अवधारणा पसंद है, लेकिन बयान लिखना मुश्किल है और मैं किसी भी समाधान से प्रभावित हूं, चाहे स्कोर कोई भी हो। मैंने कुछ सरल का उपयोग करने का सुझाव दिया होगा ताकि अधिक लोग भाग लें।
5

1
आपको एक गणितीय कथन की आवश्यकता है जो दिए गए के बराबर है। उन्हें किस अर्थ में समकक्ष होना चाहिए ? अगर मैं सही हूं, तो दिया गया बयान गलत है। इसलिए अन्य कथनों के साथ इसकी समानता मेरे लिए कठिन है। उदाहरण के लिए, क्या यह एक तर्कसंगत संख्या मौजूद है, जैसे कि i + e * एक तर्कसंगत (जहां मैं काल्पनिक इकाई है) मौजूद है?
लुइस मेंडो

1
वर्तमान नोट बस कहना है You are allowed to submit a trivially-true (e.g., for all x, x = x Ax x=x) or a trivially-false statement (e.g., for all x, x > x Ax x>x) if you can prove the statement above is true/false.। बयान अब न तो साबित हुआ है और न ही अस्वीकृत, इसलिए मुझे वास्तव में कोई आपत्ति नहीं है अगर समस्या उबाऊ हो जाती है क्योंकि ऐसी समस्या हल हो जाती है
l4m2

1
जैसा कि लिखा गया प्रश्न मुख्यतः लीड को दफनाने वाला प्रतीत होता है, और यह बताने से बचें कि वास्तव में क्या चल रहा है, इसलिए मैंने नोट्स में थोड़ा स्पष्टीकरण लिखा (कि चुनौती की गैर-तुच्छता वर्तमान में दिए गए कथन के अज्ञात सत्य मूल्य पर टिका है) ।
लिन

I'd be impressed by any solution no matter the score.स्कोर केवल उन लोगों के लिए एक उद्देश्य बनाने के लिए था जो इस समस्या को हल कर सकते हैं
l4m2

जवाबों:


27

671

E a (a+a>a*a & (E b (E c (E d (A e (A f (f<a | (E g (E h (E i ((A j ((!(j=(f+f+h)*(f+f+h)+h | j=(f+f+a+i)*(f+f+a+i)+i) | j+a<e & (E k ((A l (!(l>a & (E m k=l*m)) | (E m l=e*m))) & (E l (E m (m<k & g=(e*l+(j+a))*k+m)))))) & (A k (!(E l (l=(j+k)*(j+k)+k+a & l<e & (E m ((A n (!(n>a & (E o m=n*o)) | (E o n=e*o))) & (E n (E o (o<m & g=(e*n+l)*m+o))))))) | j<a+a & k=a | (E l (E m ((E n (n=(l+m)*(l+m)+m+a & n<e & (E o ((A p (!(p>a & (E q o=p*q)) | (E q p=e*q))) & (E p (E q (q<o & g=(e*p+n)*o+q))))))) & j=l+a+a & k=j*j*m))))))) & (E j (E k (E l ((E m (m=(k+l)*(k+l)+l & (E n (n=(f+m)*(f+m)+m+a & n<e & (E o ((A p (!(p>a & (E q o=p*q)) | (E q p=e*q))) & (E p (E q (q<o & j=(e*p+n)*o+q))))))))) & (A m (A n (A o (!(E p (p=(n+o)*(n+o)+o & (E q (q=(m+p)*(m+p)+p+a & q<e & (E r ((A s (!(s>a & (E t r=s*t)) | (E t s=e*t))) & (E s (E t (t<r & j=(e*s+q)*r+t))))))))) | m<a & n=a & o=f | (E p (E q (E r (!(E s (s=(q+r)*(q+r)+r & (E t (t=(p+s)*(p+s)+s+a & t<e & (E u ((A v (!(v>a & (E w u=v*w)) | (E w v=e*w))) & (E v (E w (w<u & j=(e*v+t)*u+w))))))))) | m=p+a & n=(f+a)*q & o=f*r)))))))) & (E m (m=b*(h*f)*l & (E n (n=b*(h*f+h)*l & (E o (o=c*(k*f)*i & (E p (p=c*(k*f+k)*i & (E q (q=d*i*l & (m+o<q & n+p>q | m<p+q & n>o+q | o<n+q & p>m+q))))))))))))))))))))))))))

यह काम किस प्रकार करता है

सबसे पहले, एक (· + e · a) के कथित सामान्य भाजक के माध्यम से गुणा करें: इस स्थिति को फिर से लिखने के लिए: · condition + b = e = c या के साथ a, b, c ℕ zero (सभी शून्य नहीं) मौजूद हैं। a · − - b · e = c या πa · b + b · e = c। साइन मुद्दों से निपटने के लिए तीन मामले आवश्यक हैं।

फिर हमें तर्कसंगत सन्दर्भों के माध्यम से e और e के बारे में बात करने के लिए इसे फिर से लिखना होगा: सभी परिमेय सन्निकटन के लिए π₁ <π₀ <π और e₀ <e <e, हमारे पास एक · b + b · e₀ <<<· + है। b · e₁ या a π₀ - b · e c <c <a · b + b · e₀ या π₁a · − + b · e₀ <c <·a · a + b · e₁। (ध्यान दें कि अब हमें मुफ्त में "सभी शून्य नहीं" की स्थिति मिलती है।

अब कठिन भाग के लिए। हम इन तर्कसंगत अनुमानों को कैसे प्राप्त करते हैं? हम जैसे सूत्रों का उपयोग करना चाहते हैं

2/1 · 2/3 · 4/3 · 4/5 2 (2 · k) / (2 · k + 1) <) / 2 <2/1 · 2/3 · 4/3 · 4/5 / (2 · k) / (2 · k + 1) · (2 ​​· k + 2) / (2 · k + 1),

((k + 1) / k) k <e <(((k + 1) / k) k + 1 ,

लेकिन इन उत्पादों की पुनरावृत्तियों की परिभाषा लिखने का कोई स्पष्ट तरीका नहीं है। इसलिए हम इस Quora पोस्ट में पहली बार वर्णित मशीनरी का निर्माण करते हैं । निर्धारित करें:

विभाजित (d), a: = (b, a = d · b,

powerOfPrime (a, p): = (b, (b (1) और विभाजित (b, a)) ⇒ विभाजन (p, b)),

जो if if a = 1, या p = 1 से संतुष्ट है, या p अभाज्य है और इसकी एक शक्ति है। फिर

isDigit (a, s, p): = a <p और ,b, (पॉवरऑफप्राइम (b, p) और rqr, (r <b और s = (p · q + a) · b + r))

if a = 0 से संतुष्ट है, या आधार-पी नंबर s का अंक है। यह हमें कुछ आधार-पी संख्या के अंकों का उपयोग करके किसी भी परिमित सेट का प्रतिनिधित्व करने देता है। अब हम लिखने के द्वारा पुनरावृत्त अभिकलन का अनुवाद कर सकते हैं, मोटे तौर पर, मध्यवर्ती राज्यों का एक सेट मौजूद है जैसे कि अंतिम स्थिति सेट में है, और सेट में प्रत्येक राज्य या तो प्रारंभिक स्थिति है या किसी अन्य राज्य से एक चरण में अनुसरण करता है। सेट।

विवरण नीचे दिए गए कोड में हैं।

हास्केल में कोड जनरेट करना

{-# LANGUAGE ImplicitParams, TypeFamilies, Rank2Types #-}

-- Define an embedded domain-specific language for propositions.
infixr 2 :|

infixr 3 :&

infix 4 :=

infix 4 :>

infix 4 :<

infixl 6 :+

infixl 7 :*

data Nat v
  = Var v
  | Nat v :+ Nat v
  | Nat v :* Nat v

instance Num (Nat v) where
  (+) = (:+)
  (*) = (:*)
  abs = id
  signum = error "signum Nat"
  fromInteger = error "fromInteger Nat"
  negate = error "negate Nat"

data Prop v
  = Ex (v -> Prop v)
  | Al (v -> Prop v)
  | Nat v := Nat v
  | Nat v :> Nat v
  | Nat v :< Nat v
  | Prop v :& Prop v
  | Prop v :| Prop v
  | Not (Prop v)

-- Display propositions in the given format.
allVars :: [String]
allVars = do
  s <- "" : allVars
  c <- ['a' .. 'z']
  pure (s ++ [c])

showNat :: Int -> Nat String -> ShowS
showNat _ (Var v) = showString v
showNat prec (a :+ b) =
  showParen (prec > 6) $ showNat 6 a . showString "+" . showNat 7 b
showNat prec (a :* b) =
  showParen (prec > 7) $ showNat 7 a . showString "*" . showNat 8 b

showProp :: Int -> Prop String -> [String] -> ShowS
showProp prec (Ex p) (v:free) =
  showParen (prec > 1) $ showString ("E " ++ v ++ " ") . showProp 4 (p v) free
showProp prec (Al p) (v:free) =
  showParen (prec > 1) $ showString ("A " ++ v ++ " ") . showProp 4 (p v) free
showProp prec (a := b) _ =
  showParen (prec > 4) $ showNat 5 a . showString "=" . showNat 5 b
showProp prec (a :> b) _ =
  showParen (prec > 4) $ showNat 5 a . showString ">" . showNat 5 b
showProp prec (a :< b) _ =
  showParen (prec > 4) $ showNat 5 a . showString "<" . showNat 5 b
showProp prec (p :& q) free =
  showParen (prec > 3) $
  showProp 4 p free . showString " & " . showProp 3 q free
showProp prec (p :| q) free =
  showParen (prec > 2) $
  showProp 3 p free . showString " | " . showProp 2 q free
showProp _ (Not p) free = showString "!" . showProp 9 p free

-- Compute the score.
scoreNat :: Nat v -> Int
scoreNat (Var _) = 1
scoreNat (a :+ b) = scoreNat a + 1 + scoreNat b
scoreNat (a :* b) = scoreNat a + 1 + scoreNat b

scoreProp :: Prop () -> Int
scoreProp (Ex p) = 2 + scoreProp (p ())
scoreProp (Al p) = 2 + scoreProp (p ())
scoreProp (p := q) = scoreNat p + 1 + scoreNat q
scoreProp (p :> q) = scoreNat p + 1 + scoreNat q
scoreProp (p :< q) = scoreNat p + 1 + scoreNat q
scoreProp (p :& q) = scoreProp p + 1 + scoreProp q
scoreProp (p :| q) = scoreProp p + 1 + scoreProp q
scoreProp (Not p) = 1 + scoreProp p

-- Convenience wrappers for n-ary exists and forall.
class OpenProp p where
  type OpenPropV p
  ex, al :: p -> Prop (OpenPropV p)

instance OpenProp (Prop v) where
  type OpenPropV (Prop v) = v
  ex = id
  al = id

instance (OpenProp p, a ~ Nat (OpenPropV p)) => OpenProp (a -> p) where
  type OpenPropV (a -> p) = OpenPropV p
  ex p = Ex (ex . p . Var)
  al p = Al (al . p . Var)

-- Utility for common subexpression elimination.
cse :: Int -> Nat v -> (Nat v -> Prop v) -> Prop v
cse uses x cont
  | (scoreNat x - 1) * (uses - 1) > 6 = ex (\x' -> x' := x :& cont x')
  | otherwise = cont x

-- p implies q.
infixl 1 ==>

p ==> q = Not p :| q

-- Define one as the unique n with n+n>n*n.
withOne ::
     ((?one :: Nat v) =>
        Prop v)
  -> Prop v
withOne p =
  ex
    (\one ->
       let ?one = one
       in one + one :> one * one :& p)

-- a is a multiple of d.
divides d a = ex (\b -> a := d * b)

-- a is a power of p (assuming p is prime).
powerOfPrime a p = al (\b -> b :> ?one :& divides b a ==> divides p b)

-- a is 0 or a digit of the base-p number s (assuming p is prime).
isDigit a s p =
  cse 2 a $ \a ->
    a :< p :&
    ex
      (\b -> powerOfPrime b p :& ex (\q r -> r :< b :& s := (p * q + a) * b + r))

-- An injection from ℕ² to ℕ, for representing tuples.
pair a b = (a + b) ^ 2 + b

-- πn₀/πd < π/4 < πn₁/πd, with both fractions approaching π/4 as k
-- increases:
-- πn₀ = 2²·4²·6²⋯(2·k)²·k
-- πn₁ = 2²·4²·6²⋯(2·k)²·(k + 1)
-- πd = 1²⋅3²·5²⋯(2·k + 1)²
πBound p k cont =
  ex
    (\s x πd ->
       al
         (\i ->
            (i := pair (k + k) x :| i := pair (k + k + ?one) πd ==>
             isDigit (i + ?one) s p) :&
            al
              (\a ->
                 isDigit (pair i a + ?one) s p ==>
                 ((i :< ?one + ?one :& a := ?one) :|
                  ex
                    (\i' a' ->
                       isDigit (pair i' a' + ?one) s p :&
                       i := i' + ?one + ?one :& a := i ^ 2 * a')))) :&
       let πn = x * k
           πn = πn + x
       in cont πn πn πd)

-- en₀/ed < e < en₁/ed, with both fractions approaching e as k
-- increases:
-- en₀ = (k + 1)^k * k
-- en₁ = (k + 1)^(k + 1)
-- ed = k^(k + 1)
eBound p k cont =
  ex
    (\s x ed ->
       cse 3 (pair x ed) (\y -> isDigit (pair k y + ?one) s p) :&
       al
         (\i a b ->
            cse 3 (pair a b) (\y -> isDigit (pair i y + ?one) s p) ==>
            (i :< ?one :& a := ?one :& b := k) :|
            ex
              (\i' a' b' ->
                 cse 3 (pair a' b') (\y -> isDigit (pair i' y + ?one) s p) ==>
                 i := i' + ?one :& a := (k + ?one) * a' :& b := k * b')) :&
       let en = x * k
           en = en + x
       in cont en en ed)

-- There exist a, b, c ∈ ℕ (not all zero) with a·π/4 + b·e = c or
-- a·π/4 = b·e + c or b·e = a·π/4 + c.
prop :: Prop v
prop =
  withOne $
  ex
    (\a b c ->
       al
         (\p k ->
            k :< ?one :|
            Bound p k $ n πn πd ->
               eBound p k $ \en en ed ->
                 cse 3 (a * πn * ed) $ \x ->
                   cse 3 (a * πn * ed) $ \x ->
                     cse 3 (b * en * πd) $ \y ->
                       cse 3 (b * en * πd) $ \y ->
                         cse 6 (c * πd * ed) $ \z ->
                           (x + y :< z :& x + y :> z) :|
                           (x :< y + z :& x :> y + z) :|
                           (y :< x + z :& y :> x + z))))

main :: IO ()
main = do
  print (scoreProp prop)
  putStrLn (showProp 0 prop allVars "")

इसे ऑनलाइन आज़माएं!


"जो अगर a = 1 से संतुष्ट है, या p अभाज्य है और इसकी एक शक्ति है" - आपके पास p = 1. भी हो सकता है, हालाँकि p> 1 से निहित है isDigit, केवल वही जगह है जहाँ आप इसका उपयोग करते हैं।
अर्जन जोहान्सन

@ ThatrjanJohansen धन्यवाद, मैंने उस नोट को ठीक कर दिया। (यह वास्तव में कोई फर्क नहीं पड़ता जो सेट करता है powerOfPrimeऔर isDigitअप्रत्याशित मामलों में प्रतिनिधित्व को हवा देता है, जब तक कि हर परिमित सेट का प्रतिनिधित्व करने का कोई तरीका नहीं है।)
एंडर्स केसेर्ग

2
यदि मेरा aस्कोर 7 या अधिक है, तो मुझे लगता है, तो यह एक ex (\a' -> a' := a :& ... )रैपर को जोड़ने के लायक होगा isDigit
अर्जन जोहान्सन

@ 68rjanJohansen ज़रूर, जो ६J बचाता है। धन्यवाद!
एंडर्स कासोर्ग

मेरा मानना ​​है कि आपको आवश्यकता है k>0, जैसा eBoundकि मामले में एक शून्य भाजक (और एक शून्य अंश) देता है k==0, इसलिए सभी विकल्प विफल हो जाते हैं।
अर्जन जोहान्सन

3

270

E1                                                                              { Exist 1, defined when Any k introduced }
Ec1 Ec2 Ec3 Ec4 Ec5 Ak k*1=k & c3>1 & ( En0 An n<n0 |                           { for large enough n, |(c1-c4)e+c3(4-pi)/8+(c2-c5)|<1/k }
Ex Ep Ew Emult At (Eb ((b>1 & Eh b*h=t) &! Eh h*p=b)) |                         { x read in base-p, then each digit in base-w. t as a digit }
Ee1 Ee2 Ehigher Elower e2<p & lower<t & ((higher*p+e1)*p+e2)*t+lower=x &        { last digit e1, this digit e2 }
    { Can infer that e2=w+1 | e1<=e2 & u1<=u2 & i1<=i2 & s1<=s2 & t1<=t2, so some conditions omitted }
Ei1 Es1 Et1 Eu1 (((u1*w)+i1)*w+t1)*w+s1=e1 &                                    { (u,i,t,s) }
Ei2 Es2 Et2 Eu2 i2<w & s2<w & t2<w & (((u2*w)+i2)*w+t2)*w+s2=e2 &               { e2=1+w is initial state u=i=0, s=t=1 }
(e2=w+1 | e1=e2 | i2=i1+1+1 & s2=s1*(n+1) & t2=t1*n &                           { i=2n, s=(n+1)^n, mult=t=n^n, s/mult=e }
Eg1 Eg2 g1+1=(i2+i2)*(i2+i2) & g1*u1+mult=g1*u2+g2 & g2<g1) &                   { u/mult=sum[j=4,8,...,4n]1/(j*j-1)=(4-pi)/8. mult=g1*(u2-u1)+g2 }
(t>1 | i2=n+n & t2=mult & Ediff Ediff2                                          { check at an end t=1 }
c1*s2+c2*mult+c3*u2+diff=c4*s2+c5*mult+diff2 & k*(diff+diff2)<mult))            { |diff-diff2|<=diff+diff2<mult/k, so ...<1/k }

a|b&cहै a|(b&c)के बाद से मुझे लगता है कि इन कोष्ठकों को हटाने बनाता है यह बेहतर लग रहे हैं, वैसे भी वे स्वतंत्र हैं।

"(expr)".replace(/\{.*?\}/g,'').match(/[a-z0-9]+|[^a-z0-9\s\(\)]/g)टोकन की गणना के लिए जावास्क्रिप्ट का उपयोग किया ।


आप क्यों ले जा सकते हैं mult = t? इसके अलावा, चूंकि xकेवल बहुत से अंक हो सकते हैं, इसलिए आपको e1 = e2 = 0पर्याप्त रूप से बड़े के लिए अनुमति देने की आवश्यकता होगी t। इसके अलावा आपको अस्पष्ट निर्माण जैसे अधिक कोष्ठक या अन्य अव्यवस्था की आवश्यकता होगी _ & _ | _
एंडर्स केसरग

@AndersKaseorg I हर आइटम को गुणा करता है mult। किसी भी समस्या mult=t2को अंत में न देखें । e1=e2=0तय किया जाना चाहिए, लेकिन यह निश्चित नहीं है, इसलिए मैं वर्तमान में तीक्ष्णता को नहीं बदलता।
l4m2

अगर a & b | cहै (a & b) | cतो t*1=tनिश्चित रूप से आपकी जगह गलत है। साथ ही आपने तुच्छ समाधान को बाहर नहीं किया है c1 = c4 & c2 = c5 & c3 = 0 & diff = diff2
एंडर्स कसर्ग

@AndersKaseorg क्या कारण है मेरा diff≠diff2काम?
l4m2

वैसे भी मैं उपयोग कर सकता हूं !(c2=c5)जैसा कि हम पहले से ही जानते हैं कि eयह तर्कहीन है, इसलिए भले ही यह काम न करे स्कोर में वृद्धि नहीं होगी
l4m2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.