क्या (A -> B) /\ (C -> D) (A /\ C) -> (B /\ D) का एक उपप्रकार है?

ऐसा लगता है कि ऐसा नहीं होना चाहिए, बस -> विरोधाभासी होने के कारण, लेकिन मुझे एक अच्छा प्रतिरूप नहीं मिल रहा है।

यदि ऐसा है, तो मैं इसे कैसे प्राप्त कर सकता हूं?

यदि नहीं, तो प्रतिवाद क्या होगा?

(स्पष्टीकरण के लिए, मैं यहाँ प्रतिच्छेदन के लिए /\ का उपयोग कर रहा हूँ।)

1
Rand00 16 अप्रैल 2020, 04:13

1 उत्तर

सबसे बढ़िया उत्तर

ये प्रकार एक उप-प्रकार के संबंध में हैं, ठीक क्योंकि contravariance के। संघ ए और सी का एक सुपरटेप होगा, इसलिए यह विरोधाभास का उल्लंघन करेगा।

फ़ंक्शंस के लिए सबटाइपिंग नियम को याद करें, जो डोमेन प्रकार में विरोधाभासी है:

टी → यू <: टी' → यू' अगर टी' <: टी और यू <: यू'

चौराहे के प्रकारों के लिए, आपके पास तीर प्रकारों पर वितरण नियम भी है:

(टी → यू) (टी → वी) = टी → (यू ∧ वी)

और निश्चित रूप से हमारे पास चौराहे के प्रकारों के लिए सामान्य उन्मूलन नियम हैं:

टी यू <: टी
टी ∧ यू <: यू

इन चार नियमों को एक साथ जोड़कर, आप आसानी से उस सबटाइपिंग को प्राप्त कर सकते हैं जिसके बारे में आप पूछ रहे हैं:

(ए → बी) ∧ (सी → डी)
<: (विरोधाभास और बाएं उन्मूलन द्वारा)
((ए ∧ सी) → बी) ∧ (सी → डी)
<: (विरोधाभास और सही उन्मूलन द्वारा)
((ए ∧ सी) → बी) ∧ ((ए ∧ सी) → डी)
<: (वितरण द्वारा)
(ए सी) → (बी ∧ डी)

FWIW, संघ प्रकारों के साथ, आपके पास दोहरा वितरण नियम भी है:

(यू → टी) ∨ (वी → टी) = (यू ∨ वी) → टी

इसके साथ, आप समान रूप से प्राप्त कर सकते हैं:

(ए → बी) ∨ (सी → डी) <: (ए ∨ सी) → (बी ∨ डी)

2
Andreas Rossberg 17 अप्रैल 2020, 21:11